package com.kmxd.ams.client.system.dto;

import io.swagger.v3.oas.annotations.media.Schema;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Size;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;

/**
 * 用户表
 *
 * @author admin
 * @since 2021-06-10
 */
@Data
@Schema(description = "用户对象")
public class SysUserAddDTO implements Serializable {

  private static final long serialVersionUID = 1L;

  /** 主键 */
  private Long id;

  /** 账号 */
  @Schema(description = "账号")
  @NotBlank(message = "账号不能为空")
  @Size(max = 100, message = "账号长度不能超过100个字符")
  private String account;

  /** 密码 加密后的密码 */
  @Schema(description = "密码 加密后的密码")
  private String password;

  /** 昵称 */
  @Schema(description = "昵称")
  @Size(max = 100, message = "昵称长度不能超过100个字符")
  private String nickname;

  /** 姓名 */
  @Schema(description = "姓名")
  @NotBlank(message = "姓名不能为空")
  @Size(max = 100, message = "姓名长度不能超过100个字符")
  private String realname;

  /** 英文名 */
  @Schema(description = "英文名")
  @Size(max = 100, message = "英文名长度不能超过100个字符")
  private String englishName;

  /** 性别 1男；2女；3未知 */
  @Schema(description = "性别 1男；2女；3未知")
  @Size(max = 100, message = "性别 1男；2女；3未知长度不能超过100个字符")
  private String sex;

  /** 生日 */
  @Schema(description = "生日")
  @DateTimeFormat(pattern = "yyyy-MM-dd")
  private Date birthday;

  /** 头像 */
  @Schema(description = "头像")
  @Size(max = 100, message = "头像长度不能超过100个字符")
  private String avatar;

  /** 邮箱 */
  @Schema(description = "邮箱")
  @Size(max = 100, message = "邮箱长度不能超过100个字符")
  private String email;

  /** 手机号 */
  @Schema(description = "手机号")
  @Size(max = 100, message = "手机号长度不能超过100个字符")
  private String phone;
  /** 部门 */
  @Schema(description = "部门")
  private Long deptId;

  /** 工号 */
  @Size(max = 30, message = "工号长度不能超过30个字符")
  private String staffNumber;

  /** 排序 */
  private Integer sort;

  /** 锁定标记 0正常；1锁定 */
  @Schema(description = "锁定标记 0正常；1锁定")
  private String lockFlag;

  /** 状态 0正常；1停用 */
  @Schema(description = "状态 0正常；1停用")
  private String status;

  /** 备注 */
  @Schema(description = "备注")
  @Size(max = 500, message = "备注长度不能超过100个字符")
  private String remarks;

  /** 岗位组 */
  private List<Long> postIds;

  /** 角色组 */
  //  private List<Long> roleIds;
  private Long roleIds;

  /** 登录mac限制 */
  @Schema(description = "登录mac限制")
  @Size(max = 100, message = "登录mac限制长度不能超过100个字符")
  private String limitMac;

  /** 开启mac地址限制0未开启，1开启 */
  @Schema(description = "开启mac地址限制0未开启，1开启")
  private Long haveMacLimit;

  /** 修改密码标记 0未修改；1已修改 */
  @Schema(description = "修改密码标记 0未修改；1已修改")
  @Size(max = 100, message = "修改密码标记 0未修改；1已修改长度不能超过100个字符")
  private String pswModified;

  /** 密码最后更改时间 */
  @Schema(description = "密码最后更改时间")
  private Date pwdUptime;

  /** 办公电话 */
  @Schema(description = "办公电话")
  @Size(max = 100, message = "办公电话长度不能超过100个字符")
  private String workTel;

  /** 工作地址 */
  @Schema(description = "工作地址")
  @Size(max = 100, message = "工作地址长度不能超过100个字符")
  private String workAddress;

  /** 家庭地址 */
  @Schema(description = "家庭地址")
  @Size(max = 100, message = "家庭地址长度不能超过100个字符")
  private String homeAddress;

  /** ip信息 */
  @Schema(description = "ip信息")
  @Size(max = 100, message = "ip信息长度不能超过100个字符")
  private String ip;

  /** mac地址 */
  @Schema(description = "mac地址")
  @Size(max = 100, message = "mac地址长度不能超过100个字符")
  private String mac;

  /** QQ号 */
  @Schema(description = "QQ号")
  @Size(max = 100, message = "QQ号长度不能超过100个字符")
  private String qq;

  /** 微信号 */
  @Schema(description = "微信号")
  @Size(max = 100, message = "微信号长度不能超过100个字符")
  private String wechat;

  /** 用户类型 0常规用户；1临时用户;2兼职用户; */
  @Schema(description = "用户类型 0常规用户；1临时用户;2兼职用户;")
  private Long userType;

  /** 开始时间 */
  @Schema(description = "开始时间")
  private Date startTime;

  /** 结束时间 */
  @Schema(description = "结束时间")
  private Date endTime;

}
